package com.smart.community.work.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalTime;

/**
 * 考勤记录VO
 * 
 * 严格按照《Java后端SpringBoot代码开发规范.md》VO规范实现：
 * - 功能单一原则：VO类只用于数据展示，不包含业务逻辑
 * - 字段命名：使用驼峰命名法，与前端保持一致
 * - 时间格式：使用@JsonFormat注解指定时间格式
 * - 完整注释：所有字段都有完整的JavaDoc注释
 * - 扩展字段：可以包含关联表的字段，如用户名、部门名等
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
public class AttendanceVO {

    /**
     * 考勤记录ID
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户真实姓名
     */
    private String realName;

    /**
     * 考勤日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate attendanceDate;

    /**
     * 上班时间
     */
    @JsonFormat(pattern = "HH:mm:ss")
    private LocalTime clockInTime;

    /**
     * 下班时间
     */
    @JsonFormat(pattern = "HH:mm:ss")
    private LocalTime clockOutTime;

    /**
     * 考勤类型：clock_in-上班，clock_out-下班
     */
    private String type;

    /**
     * 考勤类型名称
     */
    private String typeName;

    /**
     * 状态：1-正常，2-迟到，3-早退，4-缺勤
     */
    private Integer status;

    /**
     * 状态名称
     */
    private String statusName;

    /**
     * 打卡位置
     */
    private String location;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String updateTime;
}
